/*
 * Termino.cpp
 *
 *  Created on: 04/09/2013
 *      Author: pellarolojuani
 */

#include "Termino.h"

Termino::Termino() {
	this->documento = 0;
	this->frecTotal = 0;
	this->termino = "";
	this->cantDocumentos = 0;
	for (int i = 0; i<80; i++) this->frecDocs[i] = 0;
}

Termino::Termino(string unTermino){
	this->termino = unTermino;
	this->frecTotal = 1;
	this->documento = 0;
	this->cantDocumentos = 0;
	for (int i = 0; i<80; i++) this->frecDocs[i] = 0;

}

Termino::Termino(int documentos){
	this->termino = "";
	this->frecTotal = 0;
	this->documento = 0;
	this->cantDocumentos = documentos;
	for (int i = 0; i<cantDocumentos; i++) this->frecDocs[i] = 0;
}

string Termino::getTermino(){
	return this->termino;
}

void Termino::setTermino(string unTermino){
	this->termino = unTermino;
	return;
}

int Termino::getDocumento(){
	return this->documento;
}

void Termino::setDocumento(int unDocumento){
	this->documento = unDocumento;
	return;
}

int Termino::getFrecuenciaTotal(){
	return this->frecTotal;
}

void Termino::setFrecuenciaTotal(int unaFrecuencia){
	this->frecTotal = unaFrecuencia;
	return;
}

int Termino::getFrecuenciaDoc(int numDocumento){
	return this->frecDocs[numDocumento];
}

void Termino::setFrecuenciaDoc(int numDocumento, int valor){
	this->frecDocs[numDocumento] = valor;
	int k = 0;
	for (int i = 0; i<this->cantDocumentos; i++){
		if ( this->getFrecuenciaDoc(i) != 0) k++;
	}
	this->frecTotal = k;
}

void Termino::aumentarFrecuenciaDoc(int numDocumento){
	this->frecDocs[numDocumento] = this->frecDocs[numDocumento]+1;
	int k = 0;
	for (int i = 0; i<this->cantDocumentos; i++){
		if ( this->getFrecuenciaDoc(i) != 0) k++;
	}
	this->frecTotal = k;
}

void Termino::aumentarFrecuenciaTotal(){
	this->frecTotal ++;

}
int Termino::getCantDocumentos(){
	return this->cantDocumentos;
}
void Termino::setCantDocumentos(int cant){
	this->cantDocumentos = cant;
}

bool Termino::compararTermino(string unTermino){
	/*compara unicamente el termino con otro string recibido como parametro*/

	return(strcmp(this->termino.c_str(), unTermino.c_str()) == 0);
}

bool Termino::compararTermino(Termino* unTermino){
	/*compara el termino con otro de tipo Termino.
	 * compara por un lado el string y por el otro que pertenezcan al mismo documento.
	 * */

	string term = unTermino->getTermino();
	return(strcmp(this->termino.c_str(), unTermino->getTermino().c_str()) == 0 && this->getDocumento() == unTermino->getDocumento());

}

Termino::~Termino() {
	// TODO Auto-generated destructor stub
}

bool Termino::operator==(Termino& nuevoFF){

	bool sonIguales = (nuevoFF.getTermino() == this->getTermino());
	return sonIguales;
}

bool Termino::operator<(Termino& nuevoFF){

	bool soyMenor = (this->getTermino() < nuevoFF.getTermino());
	return soyMenor;
}

bool Termino::operator>(Termino& nuevoFF){

	bool soyMayor = (this->getTermino() > nuevoFF.getTermino());
	return soyMayor;
}


bool Termino::operator=(Termino nuevoFF)
{
	this->termino = nuevoFF.getTermino();
	this->documento = nuevoFF.getDocumento();
	this->frecTotal = nuevoFF.getFrecuenciaTotal();
	this->cantDocumentos = nuevoFF.getCantDocumentos();
	for (int i=0; i<80; i++) this->frecDocs[i] = nuevoFF.getFrecuenciaDoc(i);

	return true;
}


